﻿Imports CapaEntidad
Imports CapaNegocio

Public Class MantenimientoClientes
    Inherits Page

    Dim _negocio As New NegocioClientes
    Dim eCliente As New Cliente

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        If Not IsPostBack Then
            MostrarDatos()

            If Session("CodCli") = Nothing Then
                txtCodigo.Text = _negocio.UltimoID()
            End If
        End If
    End Sub

    Protected Sub MostrarDatos()
        Try
            Dim codigoCli As String = Session("CodCli").ToString
            eCliente = _negocio.ConsultarCliente(codigoCli)
            With eCliente
                txtCodigo.Text = eCliente.Codigo
                txtNombres.Text = eCliente.Nombres
                txtApellidos.Text = eCliente.Apellidos
                txtCorreo.Text = eCliente.Correo
                txtFechaNac.Text = eCliente.FechaNac
            End With

            btnGuardar.Enabled = False
            btnActualizar.Enabled = True
            btnCancelar.Enabled = True
        Catch ex As Exception
            'lblMensaje.Text = "No hay datos para mostrar"
        End Try
    End Sub

    Protected Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click

        If Not ValidarForm() Then
            Exit Sub
        End If

        Dim fn As Nullable(Of Date)

        If String.IsNullOrEmpty(txtFechaNac.Text) Then
            fn = Nothing
        Else
            fn = CDate(txtFechaNac.Text).Date
        End If

        Try
            With eCliente
                .Codigo = txtCodigo.Text
                .Nombres = txtNombres.Text
                .Apellidos = txtApellidos.Text
                .Correo = txtCorreo.Text
                .FechaNac = fn
            End With

            If _negocio.InsertarCliente(eCliente) Then
                lblMensaje.Text = "Cliente registrado correctamente!"
                Response.Redirect("~/ListarClientes.aspx")
            Else
                lblMensaje.Text = "Error al guardar el cliente"
            End If

        Catch ex As Exception
            lblMensaje.Text = ex.Message
        End Try
    End Sub

    Protected Sub btnActualizar_Click(sender As Object, e As EventArgs) Handles btnActualizar.Click

        If Session("CodCli") <> Nothing Then
            Try
                Dim fn As Nullable(Of Date)

                If String.IsNullOrEmpty(txtFechaNac.Text) Then
                    fn = Nothing
                Else
                    fn = CDate(txtFechaNac.Text).Date
                End If

                With eCliente
                    .Codigo = txtCodigo.Text
                    .Nombres = txtNombres.Text
                    .Apellidos = txtApellidos.Text
                    .Correo = txtCorreo.Text
                    .FechaNac = fn
                End With

                If _negocio.ActualizarCliente(eCliente) Then
                    lblMensaje.Text = "Cliente actualizado correctamente!"
                    Session.RemoveAll()

                    Response.Redirect("~/ListarClientes.aspx")
                Else
                    lblMensaje.Text = "Error al actualizar el cliente"
                End If

            Catch ex As Exception
                lblMensaje.Text = ex.Message
            End Try
        Else
            lblMensaje.Text = "No hay datos para actualizar"
        End If

        
    End Sub

    Protected Sub btnCancelar_Click(sender As Object, e As EventArgs) Handles btnCancelar.Click
        MostrarDatos()
    End Sub

    Protected Sub btnSalir_Click(sender As Object, e As EventArgs) Handles btnSalir.Click
        Session.RemoveAll()
        Response.Redirect("~/ListarClientes.aspx")
    End Sub

    Private Function ValidarForm() As Boolean
        If txtCodigo.Text.Trim = "" Then
            txtCodigo.Focus()
            Return False
        End If

        If txtNombres.Text.Trim = "" Then
            txtNombres.Focus()
            Return False
        End If

        If txtApellidos.Text.Trim = "" Then
            txtApellidos.Focus()
            Return False
        End If

        If txtCorreo.Text.Trim = "" Then
            txtCorreo.Focus()
            Return False
        End If

        Return True
    End Function
End Class